INSERT INTO SELECT SQL ifadesi, verileri bir tablodan kopyalar ve başka bir tabloya ekler.
INSERT INTO SELECT ifadesi, kaynak ve hedef tablolardaki veri türlerinin eşleşmesini gerektirir.
Tüm sütunları bir tablodan diğerine kopyalar:
INSERT INTO table2
SELECT *
FROM table1
WHERE condition
Bir tablodan diğerine yalnızca bazı sütunları kopyalar:
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition
Bu derste ünlü örnek veritabanı "Northwind"'yi kullanacağız.
Aşağıda "Customers" ("Müşteriler") tablosundan bir örnek bulunmaktadır:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Ve "Suppliers" ("Tedarikçiler") tablosundaki örnek:
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
---|---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
5 | Cooperativa de Quesos 'Las Cabras' | Antonio del Valle Saavedra | Calle del Rosal 4 | Oviedo | 33007 | Spain | (98) 598 76 54 |
Aşağıdaki SQL sorgusu "Suppliers" ("Tedarikçiler") "Customers" ("Müşteriler") öğesine kopyalar (verilerle doldurulmayan sütunlar NULL içerecektir):
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
SQL sorgusunun başka bir sürümü, verileri "Tedarikçiler" tablosundan "Müşteriler"e kopyalar (tüm sütunları doldurur):
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country
FROM Suppliers
Aşağıdaki SQL ifadesi yalnızca Alman tedarikçileri Müşteriler tablosuna kopyalar:
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
WHERE Country = 'Germany'